package cn.eyesea.cc.frame.base;

import cn.eyesea.cc.config.GlobalConfig;
import cn.eyesea.cc.frame.enums.LogicalResultTypeEnum;
import cn.eyesea.cc.frame.enums.ResultTypeEnum;
import lombok.Data;

import java.util.List;

/**
 * 结果资源
 *
 * @author wanghuilong
 * @version 1.0
 * @date 2021/6/27 4:37 下午
 */
@Data
public abstract class ResultResource extends Demand {

    /**
     * 名称
     */
    private String name;

    /**
     * 结果类型
     */
    private ResultTypeEnum resourceType;

    /**
     * 资源路径
     */
    private String resourcePath;

    /**
     * 包名
     */
    private String packageInfo;

    /**
     * 资源功能
     */
    private List<ResourceFunction> resourceFunctions;

    /**
     * 生成代码
     */
    private String generateCode;

    /**
     * 是否需要成代码
     */
    private Boolean needGenerateCode = true;

    /**
     * 使用方法(导包、配置)
     *
     * @param resourceFunction 引用资源的功能点
     */
    public abstract void usage(ResourceFunction resourceFunction);

    /**
     * 使用方法(导包、配置)
     *
     * @param resultResource 引用资源
     */
    public abstract void usage(ResultResource resultResource);


    /**
     * 生成代码
     */
    public abstract void generateCode(GlobalConfig globalConfig);
}
